package com.iwhalecloud.bss.kite.cucc.service.attr.linkhandler;

import com.iwhalecloud.bss.kite.common.constant.KeyConsts;
import com.iwhalecloud.bss.kite.common.util.KiteStringUtils;
import com.iwhalecloud.bss.kite.cucc.service.attr.handler.PrivateAttrHandler;
import com.iwhalecloud.bss.kite.listener.handler.attr.annotation.AttrHandler;
import com.iwhalecloud.bss.kite.listener.handler.attr.impl.AbstractAttrLinkageHandler;
import com.iwhalecloud.bss.kite.manager.inst.KiteAttr;
import com.iwhalecloud.bss.kite.manager.inst.KiteInst;
import com.iwhalecloud.bss.kite.service.attr.AttrData;
import com.iwhalecloud.bss.kite.service.scene.attr.OperateInstAttrService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
@AttrHandler(PrivateAttrHandler.class)
public class PrivateAttrLinkHandler extends AbstractAttrLinkageHandler<AttrData> {

    @Resource
    private OperateInstAttrService operateInstAttrService;

    @Override
    public void handle(KiteAttr attr, KiteInst inst, AttrData data) {
        KiteAttr PrivateAttr = inst.getAttr("200004518");//MEC边缘云服务类型
        KiteAttr PrivateAttr1 = inst.getAttr("200004509");//共享型5G MEC云主机
        KiteAttr PrivateAttr2 = inst.getAttr("200004511");//共享型5G MEC云硬盘
        KiteAttr PrivateAttr3 = inst.getAttr("200004510");//共享型5G MEC云主机其他规格
        KiteAttr PrivateAttr4 = inst.getAttr("200004512");//共享型5G MEC云硬盘其它规格
        KiteAttr PrivateAttr5 = inst.getAttr("200004513");//共享型5G MEC SSD硬盘
        KiteAttr PrivateAttr6 = inst.getAttr("200004514");//共享型5G MEC SSD硬盘其他规格
        KiteAttr PrivateAttr7 = inst.getAttr("200004515");//专有型5G MEC云资源
        KiteAttr PrivateAttr8 = inst.getAttr("200004516");//专有型5G MEC云资源其他规格
        KiteAttr PrivateAttr9 = inst.getAttr("210008025");//GPU
        if(KiteStringUtils.equals("100008014", PrivateAttr.getValue())){
            PrivateAttr1.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
            PrivateAttr2.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
            PrivateAttr5.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
            PrivateAttr7.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
            PrivateAttr8.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
            PrivateAttr9.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
        }else if(KiteStringUtils.equals("100008015", PrivateAttr.getValue())){
            PrivateAttr5.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
            PrivateAttr1.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
            PrivateAttr2.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
            PrivateAttr7.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
            PrivateAttr9.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
            // GPU属性值设为空
            operateInstAttrService.setAttrValue(
                inst, "210008025", null, data.getSceneInstId(), null);
        }
        if(KiteStringUtils.equals("100008014", PrivateAttr.getValue()) && "100008001".equals(PrivateAttr1.getValue())){
            PrivateAttr3.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
        }else {
            PrivateAttr3.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
        }
        if(KiteStringUtils.equals("100008014", PrivateAttr.getValue()) && "100008001".equals(PrivateAttr2.getValue())){
            PrivateAttr4.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
        }else {
            PrivateAttr4.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
        }
        if(KiteStringUtils.equals("100008014", PrivateAttr.getValue()) && "100008001".equals(PrivateAttr2.getValue())){
            PrivateAttr4.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
        }else {
            PrivateAttr4.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
        }
        if(KiteStringUtils.equals("100008014", PrivateAttr.getValue()) && "100008001".equals(PrivateAttr5.getValue())){
            PrivateAttr6.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
        }else {
            PrivateAttr6.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
        }
        if(KiteStringUtils.equals("100008015", PrivateAttr.getValue()) && "100008001".equals(PrivateAttr7.getValue())){
            PrivateAttr8.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_D);
        }else {
            PrivateAttr8.setShowType(KeyConsts.PROD_ATTR_SHOW_TYPE_E);
        }
    }

    @Override
    public void handleStyle(KiteAttr attr, KiteInst inst, AttrData data) {

    }
}
